/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package util.log;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;


/**
 *
 * @author Rdelacruz
 */
public class MiLoggerFile extends MiLogger {
        
    private Logger logger;  
    
    private File fileLog;
    private FileHandler fileHandler;
    
    //int n = 0;

    public MiLoggerFile() {                
         
    }
    
    public String getAbsolutePath() {
        return fileLog!=null? fileLog.getAbsolutePath() : null;
    }
    
    public void inicializar(String nombreLogger, File file, int limit, int count, boolean append) 
        throws FileNotFoundException, IOException {
        
        logger = Logger.getLogger(nombreLogger);
        
        fileLog = file;
        
        //abre el flujo al archivo
        fileHandler = new FileHandler(fileLog.getPath(), limit, count, append);
        
        SimpleFormatter formatter = new SimpleFormatter();  
        fileHandler.setFormatter(formatter);
        
        LoggerUtil.removerHandlerConsola(logger);
        
        //Logger escribirá sobre cada Handler. Incluso se puede agregar el mismo handler varias veces
        //lo cual causará que se duplique (2 handlers iguales), triplique (3 handler iguales) el log
        logger.addHandler(fileHandler);
        
        // the following statement is used to log any messages  
        //logger.info("My first log");
    }
    
    public void finalizar() {
        if(logger!=null) logger.removeHandler(fileHandler);//removiendo el Handler
        if(fileHandler!=null) fileHandler.close();//cierra el flujo al archivo
    }
    
    
    @Override
    protected void mostrar(Exception e) {
        if(logger!=null)
            logger.log(Level.SEVERE, e.getMessage(), e);//debe mostrar toda la traza
    }
    
    @Override
    protected void mostrarLineaError(String mensaje) {
        if(logger!=null)
            logger.log(Level.SEVERE, mensaje);
    }
    
    @Override
    protected void mostrarLineaDebug(String mensaje) {
        if(logger!=null)
            logger.log(Level.FINE, mensaje);
    }
    
    @Override
    protected void mostrarLineaMensaje(String mensaje) {
        if(logger!=null)
            logger.info(mensaje);
    }

    @Override
    protected void mostrarLinea(String mensaje) {
        if(logger!=null)
            logger.info(mensaje);
    }

    public File getFileLog() {
        return fileLog;
    }
    
    
}
